#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
 
#define PUBLICFIFO "serverfifo"
 
typedef struct client
{
    char clientName[20];//客户端名字
    int privatefifo;//私有管道的描述符
    //struct client *next;
}CLQ;

int clientlen=0;//用来记录客户机的数量
CLQ clientQueue[100];//利用数组将存储客户队列
 
typedef struct messagePacket
{
    int messageNo;//消息编号
    char senderName[20];//消息发送方
    char receiverName[20];//消息接收方
    char data[1024];//数据采用不定长消息
}MSP;

int publicfifo;  //公共管道
int startflags=0; //服务器启动标志 
 
void initserver(); //初始化，负责初始化服务器。
void receiverpacket();  //负责接收客户端发送的包 
void parsingpacket(MSP *msp);  //负责将客户端发送的包解析
void clientlogin(char* loginName);  //负责客户端登陆，将客户端插入客户队列中,并创建私有管道
void messagesend(MSP *pMsp);  //负责将消息发送到对应的接受方
void clientquit(char* quitName);  //负责客户端的退出，将客户端从客户队列中删除,并删除创建的管道
void closeserver();  //负责关闭服务器，关闭打开的管道和删除客户机列表
void messagehanle(char* pMes);  //负责处理输入的数据